﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FuncionarioMalFeito
{
	public class Funcionario
	{
		public string Nome { get; set; }
		public ContratacaoTipo Contratacao { get; set; }

		#region Construtores
		public Funcionario(string nome)
		{
			this.Nome = nome;
		}

		public Funcionario(string nome, ContratacaoTipo contratacao)
			: this(nome)
		{
			this.Contratacao = contratacao;
		}
		#endregion

		public double CalculaPagamento()
		{
			switch (this.Contratacao)
			{
				case ContratacaoTipo.PJ:
					return calculaSalarioPJ();
				case ContratacaoTipo.CLT:
					return calculaSalarioCLT();
				case ContratacaoTipo.CargoConfianca:
					return calculaSalarioCargoConfianca();
				case ContratacaoTipo.Estagiario:
					return 0;
				default:
					throw new Exception("Funcionário com tipo de contratação inválida");
			}
		}

		#region Olha a merda
		public void EnviaPagamento()
		{
			switch (this.Contratacao)
			{
				case ContratacaoTipo.PJ:
					break;
				case ContratacaoTipo.CLT:
					break;
				case ContratacaoTipo.CargoConfianca:
					break;
				case ContratacaoTipo.Estagiario:
					break;
				default:
					break;
			}
		}
		#endregion

		#region Metodos de calculo de salário
		private double calculaSalarioCargoConfianca()
		{
			return 5000;
		}

		private double calculaSalarioCLT()
		{
			return 1000;
		}

		private double calculaSalarioPJ()
		{
			return 3000;
		}
		#endregion
	}

	public enum ContratacaoTipo
	{
		PJ,
		CLT,
		CargoConfianca,
		Estagiario
	}
}
